package com.jh.pattern.singleton.lazy;

/**
 * @author JH_Wong
 * @projectName newforward
 * @title LazySingleton.java
 * @package com.jh.pattern.singleton.lazy
 * @description 懒汉单例模式
 * @date 2019-05-10 17:29
 */
public class LazySingleton {

    private static LazySingleton lazySingleton = null;

    private LazySingleton(){}

    /**
     * 这里是线程不安全的，若要线程安全 请加入 synchronized 至方法中
     * 但是这样效率不高，因为是锁住了整个类，还有可能诱发死锁问题
     * 需要将锁的范围缩小，详看doublecheck
     */
    public synchronized static LazySingleton getInstance(){

        if (null == lazySingleton) {
            lazySingleton = new LazySingleton();
        }

        return lazySingleton;
    }

}
